Taller VaR Simulación Histórica y CVaR -------------------------------------- Utilizar el archivo Datos primer examen 01-2020.csv para resolver el taller. Importar datos ~~~~~~~~~~~~~~ .. code:: r datos = read.csv("Datos primer examen 01-2020.csv", sep = ";", header = T) .. code:: r head(datos) tail(datos) .. raw:: html
A data.frame: 6 × 5
FechaECOISANUTRESAPFBCOLOM
<fct><int><int><dbl><dbl>
131/01/201024151228019977.220825.2
207/02/201024801254020535.421024.5
314/02/201024951274020635.121921.3
421/02/201025601288020455.622140.5
528/02/201026251270020834.521941.2
607/03/201026801260020734.821961.1
.. raw:: html
A data.frame: 6 × 5
FechaECOISANUTRESAPFBCOLOM
<fct><int><int><dbl><dbl>
51722/12/20193340193802510045800
51829/12/20193380203002528045180
51905/01/20203400196602514044380
52012/01/20203385195202518045880
52119/01/20203290193802522045800
52226/01/20203180188002476044700
Matriz de precios ~~~~~~~~~~~~~~~~~ .. code:: r precios=datos[,-1] precios = ts(precios) Nombres de las acciones ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r nombres = colnames(precios) nombres .. raw:: html
  1. 'ECO'
  2. 'ISA'
  3. 'NUTRESA'
  4. 'PFBCOLOM'
Matriz de rendimientos ~~~~~~~~~~~~~~~~~~~~~~ .. code:: r rendimientos = diff(log(precios)) Cantidad de acciones ~~~~~~~~~~~~~~~~~~~~ .. code:: r acciones = ncol(precios) acciones .. raw:: html 4 Cantidad de rendimientos ~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r numero_rendimientos = nrow(rendimientos) numero_rendimientos .. raw:: html 521 Portafolio de inversión ~~~~~~~~~~~~~~~~~~~~~~~ El portafolio de inversión está valorado en mil millones de pesos. Se tiene invertido la misma proporción en cada acción. .. code:: r proporciones = c(0.25, 0.25, 0.25, 0.25) valor_portafolio = 1000000000 valor_mercado_acciones = proporciones*valor_portafolio valor_mercado_acciones .. raw:: html
  1. 2.5e+08
  2. 2.5e+08
  3. 2.5e+08
  4. 2.5e+08
VaR Simulación Histórica y CVaR en términos porcentuales ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nivel de confianza del 99% ``NC = 0.99`` Horizonte de tiempo: semanal ``t = 1``. En este método no se puede escalar el tiempo, es decir, si la frecuencia de los rendimientos es semanal, el VaR y CVaR quedan semanales. Para otros horizontes de tiempo se debe utilizar otra base de datos con frecuencia en el tiempo distinta. Por tanto, no se utiliza en el código ``t = 1``. .. code:: r NC = 0.99 VaR individuales ~~~~~~~~~~~~~~~~ .. code:: r VaR_individuales_SH_percentil = vector() for(i in 1:acciones){ VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i],1 - NC)) } VaR_individuales_SH_percentil .. raw:: html
  1. 0.100017529037464
  2. 0.0747062638979077
  3. 0.0623792449456534
  4. 0.0746798926612424
CVaR individuales ~~~~~~~~~~~~~~~~~ .. code:: r CVaR = vector() for(i in 1:acciones){ CVaR[i] = abs(mean(tail(sort(rendimientos[,i], decreasing = T), floor(nrow(rendimientos)*(1-NC))))) } CVaR .. raw:: html
  1. 0.131734096471733
  2. 0.104054311101083
  3. 0.0763919471659559
  4. 0.0898571003585143
Rendimientos del portafolio de inversión ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r rendimientos_portafolio = vector() for(i in 1:numero_rendimientos){ rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones) } VaR portafolio de inversión ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC)) VaR_portafolio_SH_percentil .. raw:: html 1%: 0.0570097464552412 CVaR portafolio de inversión ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r CVaR_portafolio = abs(mean(tail(sort(rendimientos_portafolio, decreasing = T), floor(nrow(rendimientos)*(1 - NC))))) CVaR_portafolio .. raw:: html 0.0700265657963683 Preguntas ~~~~~~~~~ 1. Con un nivel de confianza del 99%, ¿cuál es el VaR semanal de la acción de ECO? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.99 VaR_individuales_SH_percentil = vector() for(i in 1:acciones){ VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)) } VaR_individuales_SH_percentil[1] VaR_individuales_SH_percentil[1]*valor_mercado_acciones[1] .. raw:: html 0.100017529037464 .. raw:: html 25004382.259366 Respuesta en términos porcentuales: 10,00% Respuesta en términos monetarios: $25.004.382 2. Con un nivel de confianza del 95%, ¿cuál es el VaR semanal de la acción de ECO? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.95 VaR_individuales_SH_percentil = vector() for(i in 1:acciones){ VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)) } VaR_individuales_SH_percentil[1] VaR_individuales_SH_percentil[1]*valor_mercado_acciones[1] .. raw:: html 0.0636256958802113 .. raw:: html 15906423.9700528 Respuesta en términos porcentuales: 6,36% Respuesta en términos monetarios: $15.906.424 3. Con un nivel de confianza del 99%, ¿cuál es el VaR semanal de la acción de Nutresa? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.99 VaR_individuales_SH_percentil = vector() for(i in 1:acciones){ VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)) } VaR_individuales_SH_percentil[3] VaR_individuales_SH_percentil[3]*valor_mercado_acciones[1] .. raw:: html 0.0623792449456534 .. raw:: html 15594811.2364133 Respuesta en términos porcentuales: 6,24% Respuesta en términos monetarios: $15.594.811 4. Con un nivel de confianza del 95%, ¿cuál es el VaR semanal de la acción de Nutresa? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.95 VaR_individuales_SH_percentil = vector() for(i in 1:acciones){ VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)) } VaR_individuales_SH_percentil[3] VaR_individuales_SH_percentil[3]*valor_mercado_acciones[1] .. raw:: html 0.0370702585040465 .. raw:: html 9267564.62601163 Respuesta en términos porcentuales: 3,71% Respuesta en términos monetarios: $9.267.565 5. Con un nivel de confianza del 99%, ¿cuál es el CVaR semanal de la acción de ISA? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.99 CVaR = vector() for(i in 1:acciones){ CVaR[i] = abs(mean(tail(sort(rendimientos[,i], decreasing = T), floor(nrow(rendimientos)*(1 - NC))))) } CVaR[2] CVaR[2]*valor_mercado_acciones[2] .. raw:: html 0.104054311101083 .. raw:: html 26013577.7752708 Respuesta en términos porcentuales: 10,41% Respuesta en términos monetarios: $26.013.578 6. Con un nivel de confianza del 95%, ¿cuál es el CVaR semanal de la acción de ISA? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.95 CVaR = vector() for(i in 1:acciones){ CVaR[i] = abs(mean(tail(sort(rendimientos[,i], decreasing = T), floor(nrow(rendimientos)*(1 - NC))))) } CVaR[2] CVaR[2]*valor_mercado_acciones[2] .. raw:: html 0.0701004864115367 .. raw:: html 17525121.6028842 Respuesta en términos porcentuales: 7,01% Respuesta en términos monetarios: $17.525.122 7. Con un nivel de confianza del 99%, ¿cuál es el VaR semanal del portafolio de inversión? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.99 VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC)) VaR_portafolio_SH_percentil VaR_portafolio_SH_percentil*valor_portafolio .. raw:: html 1%: 0.0570097464552412 .. raw:: html 1%: 57009746.4552412 Respuesta en términos porcentuales: 5,70% Respuesta en términos monetarios: $57.009.746 8. Con un nivel de confianza del 95%, ¿cuál es el VaR semanal del portafolio de inversión? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.95 VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC)) VaR_portafolio_SH_percentil VaR_portafolio_SH_percentil*valor_portafolio .. raw:: html 5%: 0.0346490917710773 .. raw:: html 5%: 34649091.7710773 Respuesta en términos porcentuales: 3,46% Respuesta en términos monetarios: $34.649.092 9. Con un nivel de confianza del 99%, ¿cuál es el CVaR semanal del portafolio de inversión? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.99 CVaR_portafolio = abs(mean(tail(sort(rendimientos_portafolio,decreasing = T), floor(nrow(rendimientos)*(1 - NC))))) CVaR_portafolio CVaR_portafolio*valor_portafolio .. raw:: html 0.0700265657963683 .. raw:: html 70026565.7963683 Respuesta en términos porcentuales: 7,00% Respuesta en términos monetarios: $70.026.566 10. Con un nivel de confianza del 99%, ¿cuál es el Beneficio por Diversificación semanal del portafolio de inversión? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.99 VaR_individuales_SH_percentil=vector() for(i in 1:acciones){ VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)*valor_mercado_acciones[i]) } VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC))*valor_portafolio BD = sum(VaR_individuales_SH_percentil) - VaR_portafolio_SH_percentil BD .. raw:: html 1%: 20935986.1803257 Respuesta: $20.935.986 11. Con un nivel de confianza del 95%, ¿cuál es el Beneficio por Diversificación semanal del portafolio de inversión? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r NC = 0.95 VaR_individuales_SH_percentil=vector() for(i in 1:acciones){ VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)*valor_mercado_acciones[i]) } VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC))*valor_portafolio BD = sum(VaR_individuales_SH_percentil) - VaR_portafolio_SH_percentil BD .. raw:: html 5%: 15479650.510801 Respuesta: $15.479.651